# Calling convention:
# -> rdi, rsi, rdx, rcx, r8d, r9d, [stack] ->
# rax must be zeroed
# sym module use R_1 register

.text
         jmp    data
code:
         popq   %rdi                 # Restore first argument
         movq   %rdi, %rsi           # Place second arg to next register
         addq   $(args-hello), %rsi  # Count second argument value
         call   %rbx                 # Call passed function
         int3                        # Revert

data:
         call   code

hello:
.string "Hello World: %s\n"
args:
.string "Blah bah"